跳到主要内容

预编译头文件

创建 Visual Studio 项目时,会默认生成一个名为 pch.cpp 的文件,这个文件是用来生成预编译头文件的。预编译头文件的作用是提高编译速度,将一些常用的头文件放在预编译头文件中,这样在编译时就不需要重复编译这些头文件了。

pch.cpp 文件通常与预编译头文件(precompiled header)相关联。在C++项目中,预编译头文件用于加快编译速度。预编译头文件通常是 .h 文件,例如 pch.h,而与之对应的 .cpp 文件是 pch.cpp

什么是预编译头文件?

预编译头文件是一种技术,通过预先编译常用的头文件,减少在每次编译时重复处理这些头文件的时间,从而加快编译过程。这些头文件中的内容通常不会频繁变化,因此可以预编译并在后续的编译过程中重用。

pch.cpp 的作用

pch.cpp 文件用于生成预编译头文件的对象文件。在这个文件中,只包含预编译头文件 pch.h,这样编译器在处理 pch.cpp 时会生成一个包含预编译头内容的中间文件(例如 pch.obj),随后在其他源文件的编译过程中重用这个中间文件。

示例

pch.h

// pch.h: 这是预编译头文件。以下所列的头文件仅编译一次,从而提高生成性能。
// 此功能还会影响 IntelliSense 性能,包括代码完成和许多代码浏览功能。
// 但是如果此处列出的文件更新过,所有这些文件都会被重新编译。
// 不要在此文件中添加频繁更新的文件,
// 否则它的性能优势将无效。

#ifndef PCH_H
#define PCH_H

// 添加要预编译的头文件
#include <iostream>
#include <vector>
#include <string>
#include <map>
#include <algorithm>
// ... 其他常用的头文件

#endif //PCH_H

pch.cpp

// pch.cpp: 这是与预编译头对应的源文件;编译成功所必需的

#include "pch.h"

// 这个文件通常是空的,包含 "pch.h" 即可。

如何使用

  1. 项目设置: 确保在项目设置中启用预编译头文件。具体步骤如下:

    • 对于 Visual Studio:
      1. 右键点击项目,在弹出菜单中选择 “Properties”。
      2. 选择 “C/C++” -> “Precompiled Headers”。
      3. 在 “Precompiled Header” 选项中选择 “Use (/Yu)”。
      4. 在 “Precompiled Header File” 中填写 pch.h
      5. 对于 pch.cpp 文件,设置 “Precompiled Header” 选项为 “Create (/Yc)”。
    • 对于其他 IDE 或构建系统,请参考其文档进行设置。
  2. 包含预编译头文件: 在所有源文件的开头包含预编译头文件 pch.h

示例源文件

#include "pch.h"  // 包含预编译头文件
#include "myheader.h"

int main() {
// 你的代码
std::cout << "Hello, World!" << std::endl;
return 0;
}

注意事项

  • 仅在项目初期设置一次: 预编译头文件的内容应当相对稳定,不要频繁更改,否则每次更改都会重新编译预编译头文件,失去性能优势。
  • 适用大型项目: 对于小型项目,预编译头文件的优势可能不明显,但对于大型项目,它可以显著减少编译时间。

通过使用 pch.hpch.cpp,你可以显著加快 C++ 项目的编译速度,特别是在包含大量头文件的情况下。